/* Required */
type test3 = Required<User>
type test4 = CustomRequired<User>

//原理
type CustomRequired<T> = {
  [P in keyof T]-?: T[P] //[P in keyof T]-?: T[P] 是一个类型断言，它表示对于类型 T 的每一个属性键 P，如果该属性存在（即非可选属性），则其类型为 T[P]。
}

//结果
interface User {
  name: string;
  age: number;
}